Colmap 中 Simple_Pinhole 和 Pinhole 模型生成内参的转换
最近在跑 NeRF 的时候需要用到自己的数据集做测试,于是用 Colmap 重建了一组数据,不过在选择相机模型的时候看到了 Simple_Pinhole 和 Pinhole 两个模型,对应生成的数据里内参格式分别是:
- Simple_Pinhole:
- Pinhole:
那么这两个值能不能互相转换呢,我们平常学到的针孔相机的模型应该都只有一个焦距,但是 Pinhole 模型中出现了 两个焦距值,有什么不同吗?于是我去查了一下,这里做一个记录。结论:平常一般都是一样的,除非是特殊的畸变模型。
产生的原因
首先我们看看 Pinhole 模型内参矩阵的形式:
其中 是表示图像在图像坐标系中的偏移量,但是 就比较不同了,对于一般情况下,这两个值应该是相等的,毕竟小孔成像对应到各个像素上都满足一个相似性的比例关系,这两个关系在两个坐标轴上应该是相同的,不然就畸变了是吧。
具体的推导可以看看参考文章里的 [4],[5] 这两篇文章,都写得很详细。
小孔成像公式推导
最近是真的智力下降了,一时间没反应过来这个公式怎么推出来的。

从百度截的针孔相机模型图
从图中我们可以得到几个量:
- 焦距 :OF
- 像距 :OD
- 物距 :OB
我们可以通过相似三角形得到这样的关系:
通过 OC = AB 可以进一步得到:
参考文章
[1] [相机模型详解](https://blog.csdn.net/lsh_2013/article/details/47615309)
[2] [关于相机内参中的焦距fx和fy](https://www.cnblogs.com/zipeilu/p/6658177.html)
[3] [相机的那些事儿 (二)成像模型](https://zhuanlan.zhihu.com/p/23090593)
[4] [相机标定的内参、外参、畸变参数](https://www.jianshu.com/p/3e6764b13c6e)
[5] [相机的内参和外参分别是什么意思?](https://www.zhihu.com/question/484467944/answer/2288042490)